using System;
using System.ComponentModel;

namespace TrueCode.Core.EditableEntity
{
  public interface IEditable : INotifyPropertyChanged
  {
    Guid Key{ get; }
    EditableObjectState State{ get; }

    void AcceptChanges();
    void RejectChanges();
    void MarkDeleted();
  }

  public interface IEditable< T > : IEditable where T : IEntity< T >
  {
    T Original{ get; }
    T Current{ get; set; }
  }
}